package com.zatech.cgnci.project.service;

import com.zatech.cgnci.project.dto.*;
import com.zatech.cgnci.project.entity.CgnciApprovalConfigDO;
import com.zatech.cgnci.project.entity.CgnciApprovalInfoDO;
import com.zatech.cgnci.project.vo.ApprovalConfigVO;
import com.zatech.cgnci.project.vo.ApprovalInfoVO;
import com.zatech.cgnci.project.vo.ApprovalProcessVO;
import com.zatech.cgnci.project.vo.FlowTaskVO;

import java.util.List;
import java.util.Map;

/**
 * @author user
 */
public interface IApprovalService {

    ApprovalInfoVO create(FlowTaskCreateDTO flowTaskCreateDTO);

    FlowTaskVO submit(FlowTaskSubmitDTO flowTaskSubmitDTO);

    FlowTaskVO approve(FlowTaskApprovalDTO flowTaskApprovalDTO);

    FlowTaskVO back(FlowTaskBackDTO flowTaskBackDTO);

    void cancelTask(FlowTaskCancelDTO flowTaskCancelDTO);

    List<Map<String, Object>> getTodoTasks(String approveUserId);

    List<Map<String, Object>> getDoneTasks(String approveUserId);

    List<ApprovalProcessVO> getApprovalProcess(String groupId, Long approvalInfoId);

    Map<String, Object> getTaskApprovalInfo(CgnciApprovalInfoDO approvalInfo, CgnciApprovalConfigDO currentApprovalConfig, String approverUserId);

    List<ApprovalConfigVO> listBackNode(String formId, String formNo);
}
